class Solution {
    public:
    // 1 2 0
        vector<int> buildArray(vector<int>& nums) {
            int n = nums.size();
            for(int i = 0;i < n;i++){
                if(nums[i] < 0){
                    continue;
                }
                int x = nums[i],cnti = i;
                while(nums[cnti] != i){
                    int nxt = nums[cnti];
                    nums[cnti] = ~nums[nxt];
                    cnti = nxt;
                }
                nums[cnti] = ~x;
            }
            for (int i = 0; i < n; i++) {
                nums[i] = ~nums[i]; // 复原
            }
            return nums;
        }
    };